package main

import "fmt"

//递归调用就是函数调用自身
//执行一个函数时，就创建一个新的受保护的独立空间（新函数栈）
//函数的局部变量是独立的，不会相互影响
//递归必须向退出递归的条件逼近，否则就是无限递归
//当一个函数执行完毕，或者遇到return，就会返回，遵守谁调用，就将结果返回给谁，同时当函数执行完毕或返回时，该函数本身也会被系统销毁
func test(n int) {
	if n > 2 {
		n--
		test(n)
	}
	fmt.Println("n=", n)
}
func main() {
	test(4)
}
